Some types of non-volatile memory, such as flash memory, record binary data by storing a certain amount of charge in a memory cell. When the data is read, the voltage level of the stored charge is compared to a reference voltage. The binary value of the bit read from that cell will depend on whether the voltage of the stored charge is higher or lower than the reference voltage. However, since the stored charge is an analog phenomenon, its actual value may not be exactly what was intended, and it may even leak away over time, so this type of non-volatile memory is subject to errors when reading the data stored in the memory. When such errors occur while reading sequential data from the memory, an error checking and correction (ECC) process may be used to detect and hopefully correct the errors. But some errors may even be uncorrectable with the ECC. Whether a particular error is correctable at the tine or not, this degradation in the reliability of the memory is an ongoing problem. This type of problem may become even more widespread as flash memories move increasingly to smaller geometries and to multiple-bits-per-cell structures, which have less tolerance for variation in the stored charge.